#include "ff_ex.h"
/*--------------------------------------------------------------*/
/* FatFs module application interface                           */

FRESULT (*f_open) (FIL* fp, const TCHAR* path, BYTE mode)=(void*)0xfebca987;				/* Open or create a file */
FRESULT (*f_close) (FIL* fp)=(void*)0xfebca987;											/* Close an open file object */
FRESULT (*f_read) (FIL* fp, void* buff, UINT btr, UINT* br)=(void*)0xfebca987;			/* Read data from the file */
FRESULT (*f_write) (FIL* fp, const void* buff, UINT btw, UINT* bw)=(void*)0xfebca987;	/* Write data to the file */
FRESULT (*f_lseek) (FIL* fp, FSIZE_t ofs)=(void*)0xfebca987;								/* Move file pointer of the file object */
FRESULT (*f_truncate) (FIL* fp)=(void*)0xfebca987;										/* Truncate the file */
FRESULT (*f_sync) (FIL* fp)=(void*)0xfebca987;											/* Flush cached data of the writing file */
FRESULT (*f_opendir )(DIR* dp, const TCHAR* path)=(void*)0xfebca987;						/* Open a directory */
FRESULT (*f_closedir )(DIR* dp)=(void*)0xfebca987;										/* Close an open directory */
FRESULT (*f_readdir) (DIR* dp, FILINFO* fno)=(void*)0xfebca987;							/* Read a directory item */
FRESULT (*f_findfirst) (DIR* dp, FILINFO* fno, const TCHAR* path, const TCHAR* pattern)=(void*)0xfebca987;	/* Find first file */
FRESULT (*f_findnext) (DIR* dp, FILINFO* fno)=(void*)0xfebca987;							/* Find next file */
FRESULT (*f_mkdir )(const TCHAR* path)=(void*)0xfebca987;								/* Create a sub directory */
FRESULT (*f_unlink )(const TCHAR* path)=(void*)0xfebca987;								/* Delete an existing file or directory */
FRESULT (*f_rename) (const TCHAR* path_old, const TCHAR* path_new)=(void*)0xfebca987;	/* Rename/Move a file or directory */
FRESULT (*f_stat) (const TCHAR* path, FILINFO* fno)=(void*)0xfebca987;					/* Get file status */
FRESULT (*f_chmod )(const TCHAR* path, BYTE attr, BYTE mask)=(void*)0xfebca987;			/* Change attribute of a file/dir */
FRESULT (*f_utime) (const TCHAR* path, const FILINFO* fno)=(void*)0xfebca987;			/* Change timestamp of a file/dir */
FRESULT (*f_chdir) (const TCHAR* path)=(void*)0xfebca987;								/* Change current directory */
FRESULT (*f_chdrive )(const TCHAR* path)=(void*)0xfebca987;								/* Change current drive */
FRESULT (*f_getcwd )(TCHAR* buff, UINT len)=(void*)0xfebca987;							/* Get current directory */
FRESULT (*f_getfree )(const TCHAR* path, DWORD* nclst, FATFS** fatfs)=(void*)0xfebca987;	/* Get number of free clusters on the drive */
FRESULT (*f_getlabel) (const TCHAR* path, TCHAR* label, DWORD* vsn)=(void*)0xfebca987;	/* Get volume label */
FRESULT (*f_setlabel) (const TCHAR* label)=(void*)0xfebca987;							/* Set volume label */
FRESULT (*f_forward )(FIL* fp, UINT(*func)(const BYTE*,UINT), UINT btf, UINT* bf)=(void*)0xfebca987;	/* Forward data to the stream */
FRESULT (*f_expand )(FIL* fp, FSIZE_t szf, BYTE opt)=(void*)0xfebca987;					/* Allocate a contiguous block to the file */
FRESULT (*f_mount )(FATFS* fs, const TCHAR* path, BYTE opt)=(void*)0xfebca987;			/* Mount/Unmount a logical drive */
FRESULT (*f_mkfs) (const TCHAR* path, BYTE opt, DWORD au, void* work, UINT len)=(void*)0xfebca987;	/* Create a FAT volume */
FRESULT (*f_fdisk )(BYTE pdrv, const DWORD* szt, void* work)=(void*)0xfebca987;			/* Divide a physical drive into some partitions */
FRESULT (*f_setcp )(WORD cp)=(void*)0xfebca987;											/* Set current code page */
int (*f_putc )(TCHAR c, FIL* fp)=(void*)0xfebca987;										/* Put a character to the file */
int (*f_puts )(const TCHAR* str, FIL* cp)=(void*)0xfebca987;								/* Put a string to the file */
int (*f_printf )(FIL* fp, const TCHAR* str, ...)=(void*)0xfebca987;						/* Put a formatted string to the file */
TCHAR* (*f_gets) (TCHAR* buff, int len, FIL* fp)=(void*)0xfebca987;						/* Get a string from the file */

/*--------------------------------------------------------------*/
/* Additional user defined functions                            */

/* RTC function */
#if !FF_FS_READONLY && !FF_FS_NORTC
DWORD (*get_fattime) (void)=(void*)0xfebca987;
#endif

/* LFN support functions */
#if FF_USE_LFN >= 1						/* Code conversion (defined in unicode.c) */
WCHAR (*ff_oem2uni) (WCHAR oem, WORD cp)=(void*)0xfebca987;	/* OEM code to Unicode conversion */
WCHAR (*ff_uni2oem )(DWORD uni, WORD cp)=(void*)0xfebca987;	/* Unicode to OEM code conversion */
DWORD (*ff_wtoupper) (DWORD uni)=(void*)0xfebca987;			/* Unicode upper-case conversion */
#endif
#if FF_USE_LFN == 3						/* Dynamic memory allocation */
void* (*ff_memalloc )(UINT msize)=(void*)0xfebca987;			/* Allocate memory block */
void (*ff_memfree )(void* mblock)=(void*)0xfebca987;			/* Free memory block */
#endif

/* Sync functions */
#if FF_FS_REENTRANT
int (*ff_cre_syncobj) (BYTE vol, FF_SYNC_t* sobj)=(void*)0xfebca987;	/* Create a sync object */
int (*ff_req_grant )(FF_SYNC_t sobj)=(void*)0xfebca987;		/* Lock sync object */
void (*ff_rel_grant )(FF_SYNC_t sobj)=(void*)0xfebca987;		/* Unlock sync object */
int (*ff_del_syncobj) (FF_SYNC_t sobj)=(void*)0xfebca987;	/* Delete a sync object */
#endif


